/*
函数：
    概念：完成特定功能的一个模块，封装程序
    分类：库函数和自定义函数
    作用：提高代码编写效率，降低重复率，省去一些重复的代码
    函数的组成：函数首部 和 函数体（最外层花括号括起来的内容）
                函数首部分为三个部分：返回值 函数名 参数列表
    函数的定义：
            返回值 函数名(形式参数列表)
            {
                函数体
            }
            在函数返回数据时，与返回值类型一致，没有返回值时用void(空的意思)，没有参数也用void
            在函数定义时，如果没有写返回值类型，它会默认为int类型

    函数的调用 ：
            函数名（实际参数列表）;
            在函数调用时，参数类型要一致并且要一一对应，如果没有参数，原括号内什么都不写
    函数的声明：
            返回值  函数名(形式参数列表)；
            一个函数只能被定义一次，但可以声明多次。
            函数声明可以放在被主调函数内
注意：函数调用传参时，只是做值的传递，要求参数传递时，类型必须是一一对应的，如果有多个参数用逗号隔开，返回值也是应当与调用时接收的类型一致
        在函数中，形参是实参的值拷贝版（指针除外），在函数内修改形参的值，实参是不会发生变化的（指针除外）
    exit函数 ：终止整个程序
    ！！！！   函数可以嵌套调用但不能嵌套定义
    函数的递归调用：
    在调用一个函数的过程中又出现直接或间接地调用该函数本身，称为函数的递归调用。
二维字符数组：
    char str[5][20];
字符串操作函数
    strlen() :求字符串长度
    strcpy(s1,s2) :字符串复制,将s2复制给s1
    strcmp(s1,s2);//字符串比较函数 比较的是ascii值  有返回值 ， >0:s1>s2    0:s1==s2    <0:s1<s2
    strcat(s1,s2);//字符串连接  将s2连接在s1的后面
    strstr(s1,s2);//在s1字符串中找字符串s2，如果找到了返回的是s2在s1中的地址，如果没找到返回NULL
*/
#include <stdio.h>
#include <string.h>//字符串操作函数头文件

#if 0
int main(void)
{
    char s1[20]={0};
    char s2[20]={0};
    char *p;
    long len;
    //strcpy字符串复制函数
    strcpy(s1,"zhangsan");
    printf("strcpy函数 s1:%s\n",s1);
    //strlen字符串长度函数
    len=strlen(s1);
    printf("strlen函数 s1-len:%ld\n",len);
    //strcmp   比较ASCII码值
    strcpy(s2,"zhangsi");
    int res=strcmp(s1,s2);
    printf("strcmp函数 res=%d\n",res);
    res=strcmp(s2,s1);
    printf("strcmp函数 res=%d\n",res);
    strcpy(s2,s1);
    res=strcmp(s1,s2);
    printf("strcmp函数 res=%d\n",res);
    //strcat   字符串连接
    strcpy(s1,"TOM");
    strcpy(s2,"JERRY");
    strcat(s1," and ");
    strcat(s1,s2);
    puts(s1);
    //strstr  在s1字符串中找字符串s2
    p=strstr(s1,"and");
    printf("p=%s\n",p);
    p=strstr(s1,"and123");
    printf("p=%s\n",p);
}
#endif

// #include <stdio.h>
// //递归函数
// int getage(int n)
// {
//     if(n==1)
//     {
//         return 10;
//     }
//     else
//     return getage(n-1)+2;
// }
// int jc(int n)
// {
//     if(n==0||n==1)
//     {
//         return 1;
//     }
//     else
//     return jc(n-1)*n;
// }
// int main(void)
// {
//     //int age=getage(5);
//     //printf("第5个学生的年龄是:%d岁\n",age);
//     int num=jc(6);
//     printf("num=%d\n",num);
// }



// #include <stdio.h>
// #include <stdlib.h>
// int getmax2(int a,int b)
// {
//     return a>b?a:b;
// }
// int getmax1(int a,int b,int c,int d)
// {
//     int max;
//     max=getmax2(a,b);
//     max=getmax2(max,c);
//     max=getmax2(max,d);
//     return max;
// }
// int main(void)
// {
//     int a=100,b=200,c=300,d=400,max;
//     max=getmax1(a,b,c,d);
//     printf("max=%d\n",max);
// }